![]() |
![]() |
![]() |
![]() |
![]() |
如我建立了二個使用者帳號〝aaa〞,〝bbb〞兩個使用者帳號,實際的目錄結構如下圖:
當用文字界面以帳號〝aaa〞登入時工作的目錄為〝/home/aaa〞(紅色圈起來的地方),其父目錄為〝home〞,而〝Desktop〞和〝Documents〞都是〝aaa〞的子目錄。
語法:pwd [-otpiton] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
pwd/ (print working directory)顯示工作目錄/ /Any |
-P (大寫) | 如果工作的目錄為連結檔,列出真正的工作目錄,而非連結檔的目錄 |
[aaa@localhost ~]$ cd ~ ←進入自己的家目錄 [aaa@localhost ~]$ pwd ←顯示完整的工作目錄(帳號〝aaa〞的家目錄) /home/aaa [aaa@localhost ~]$ cd /var/mail ←進入目錄〝/var/mail〞 [aaa@localhost mail]$ pwd ←顯示目前的目錄 /var/mail [aaa@localhost mail]$ pwd -P ←列出真正的工作目錄(非連結檔的目錄) /var/spool/mail |
語法:tree [-otpiton][--option] [path] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
tree/ 顯示目錄/ Any |
-a | 展開列出所有檔案和目錄.包含以〝.〞開頭的隱藏檔 |
-C | 使用彩色清單(目錄和檔案不同顏色) | |
-d | 只列出目錄不列出檔案 | |
-F | 為不同的檔案類型後面加識別字元 〝/〞為目錄 〝=〞為 socket 檔 〝*〞為執行檔 〝|〞為 FIFO 檔 〝@〞為連結檔 |
|
-g | 列出所屬的群組 | |
-p | 列出權限 | |
-u | 列出擁有者 | |
-I pattern | 不列出符合 PATTERN+萬用字元組合的檔案和目錄 | |
-P pattern | 列出符合 PATTERN+萬用字元組合的檔案和目錄 | |
-l | 如為目錄為連結檔,直接列出其原始目錄 | |
-L level | 只列出幾 level 的目錄階數 | |
-x | 只列出目前的檔案系統 (例如目前的 file-system 為 ext3,但有些目錄可能為 ext2 或 FAT 等會被排除) |
|
--help | 指令自帶說明 |
$ tree -L 1 / ←列出從根目錄開始一階的目錄 / |-- bin |-- boot |-- dev |-- etc |-- home |-- lib |-- lost+found |-- media 以下略 |
$ tree ←如沒有任何路徑,會列工作目錄下的檔案和子目錄 . |-- Dektop |-- Documents |-- Download |-- Music |-- Pictures |-- Public |-- lost+found 以下略 |
$ tree -d /home ←列出 /home 內的子目錄,且只列出目錄不列出檔案 /home |-- aaa | |-- Desktop | |-- Documents | |-- Music | |-- Pictures | |-- Public | `-- Videos `-- bbb [error opeing dir] ←如果權限不夠,是無法進入或列出不屬於自己權限的目錄(除非用 root 登入) |
[aaa@localhost ~]$ cd /bin [aaa@localhost bin]$ ←提示符號改變了,表示已進入 /bin 目錄 [aaa@localhost bin]$ pwd ←用 pwd 指令確認一下 /bin [aaa@localhost bin]$ cd /root ←到 root 的家目錄瞧瞧 -bash: cd: /root: Permission denied ←權限不夠是進不去的喔 |
$ cp -v /usr/share/dict/linux.words /tmp ←複製檔案到目錄 /tmp(用絕對路徑) |
[aaa@localhost /]$ cd /usr/share/dict ←用絕對路徑先進入路径〝/usr/share/dict〞 [aaa@localhost dict]$ pwd ←用 pwd 指令確認一下 /usr/share/dict [aaa@localhost dict]$ cd .. ←用相對路徑〝..〞到其父目錄〝/usr/share〞(上一層) [aaa@localhost share]$ pwd ← pwd 再確認一下 /usr/share [aaa@localhost share]$ cd dict ←用相對路徑再進入目錄〝/usr/share/dict〞 [aaa@localhost dict]$ cd ../../.. ←回到上一層的操作可連續喔!(連回三次上一層到到根目錄了) [aaa@localhost /]$ pwd ← pwd 再確認一下 / [aaa@localhost /]$ cd /usr/share ←用絕對路徑先進入路径〝/usr/share〞 [aaa@localhost share]$ cd ../sbin ←用相對路徑回上一層再進入子目錄〝sbin〞 [aaa@localhost sbin]$ pwd ← 確認目前在何處 /usr/sbin |
$ mv -v ../../fileA ../ ←移動上二層的檔案〝fileA〞到其父目錄(上一層) $ rm ../* ←刪除父目錄內所有檔案 |
$ cp -v /usr/share/dict/linux.words ~/←複製檔案〝linux.words〞到家目錄 $ cd ~ ←回到自己的家目錄 |
# cp ~bbb/fileA ~aaa/ ←複製〝bbb〞家目檔案到〝aaa〞家目檔 # cd ~aaa ←進入帳號〝aaa〞的家目錄 # ls ~bbb/ ←列出〝bbb〞的家目錄內的檔案 |
$ cd /bin ←到目錄 /bin $ cd /etc ←到目錄 /etc $ cd - ←回上一目錄 (/bin) /bin |
$ cp ./file /tmp ←複製工作目錄的檔案到 /tmp $ ./backup.sh ←執行工作目錄的檔案 |
$ mkdir ./-dir ←建立一目錄〝-dir〞 $ cd ./-dir ←進入子目錄〝-dir〞 $ cd .. ←回上一層目錄 $ rmdir ./-dir ←刪除目錄〝-dir〞 |
語法:mkdir [-otpiton][--option] directory | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
mkdir/ (make directory)建立目錄/ Any |
-m | 設定目錄的權限 |
-p | 建立巢狀目錄(一次可建立好幾層的目錄) | |
--verbose | 顯示所建立的目錄 | |
--help | 指令自帶說明 |
[aaa@localhost ~]$ cd /tmp ←切換目錄到 /tmp [aaa@localhost tmp]$ mkdir dir_test ←建立目錄 /tmp/dir_test |
$ mkdir /tmp/dir_test ←建立目錄/tmp/dir_test |
$ cd /tmp ←切換目錄到 /tmp $ mkdir level_1/level_2 $ mkdir: canot create directory 'level_1/level_2': No such file or directory ←為什麼不能建立目錄?原來預設的情況,目錄要一層一層的建立,不能一次建立多層的目錄 $ mkdir level_1 ←建立目錄 /tmp/level_1 $ cd level_1 ←進入 /tmp/level_1 $ mkdir level_2 ←進入後再建立下一層的目錄 /tmp/level_1/level_2 |
$ mkdir -p --verbose /tmp/111/222/333/444 mkdir: create directory 'tmp/111' mkdir: create directory 'tmp/111/222' mkdir: create directory 'tmp/111/222/333' mkdir: create directory 'tmp/111/222/333/444' |
$ mkdir -m 770 /tmp/jason_dir ←建立目錄一併設權限 |
語法:rmdir [-otpiton][--option] directory | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
rmdir/ (remove directory)移除目錄/ Any |
-p | 移除巢狀目錄(一次可移除好幾層的目錄,但一定要目錄是空目錄) |
--verbose | 顯示所移除的目錄 | |
--help | 指令自帶說明 |
$ mkdir -p --verbose /tmp/111/222/333/444 ←建立多層的目錄 $ rmdir /tmp/111 ←移除目錄 /tmp/111 $ rmdir: /tmp/111: Directory not empty ←目錄內有子目錄或檔案是不能移除的 $ rmdir /tmp/111/222/333/444 ←雖都是空目錄,也要一層一層的移除(先移除最外層) $ rmdir /tmp/111/222/333 $ rmdir /tmp/111/222 $ rmdir /tmp/111 |
$ rmdir -p --verbose /tmp/111/222/333/444 ←如是空目錄(目錄內沒檔案),可好幾層一起移除 $ rmdir dir1 dir2 dir3 ←刪除目錄 dir1,dir2,dir3 |
$ file /bin/su ←看一下 /bin/su 是什麼檔 /bin/ls: ELF 64-bit LSB executable(後顯示略)←64 位元的執行檔〝ELF〞(Executable and Linkable Format,可執行和可鏈接格式) $ file /usr/share/man/man1/gawk.1.gz /usr/share/man/man1/gawk.1.gz: gzip compressed data, from Unix, max compression ←gzip 壓縮檔 $ file /etc/fstab /etc/fstab: ASCII text ←ASCII 純文檔 $ file /tmp /tmp: sticky directory ←具 Sticky bit 特殊權限的目錄 $ file /etc/grub.conf /etc/grub.conf: symbolic link to `../boot/grub/grub.conf' ←連結檔 |
語法:ls [-otpiton][--option] [path/file/directory] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
ls/ (list)列出檔案/ Any |
-a | 列出所有檔案和目錄.包含以〝.〞開頭的隱藏檔 |
-A | 同 -a 但不包含代表本身的目錄的 〝.〞和其父目錄〝..〞 | |
-B | 排除已備分的檔案(以〝 ~〞結尾的檔案) | |
-d | 只列出目錄,而不列出目錄下的檔案 | |
-F | 為不同的檔案類型後面加識別字元 〝/〞為目錄 〝=〞為 socket 檔 〝*〞為執行檔 〝|〞為 FIFO 檔 |
|
-l (小寫 L) | 列出冗長檔案資訊(包含擁有者屬性,權限,日期,大小等) | |
-g | 同 -l 但不包含擁有者 | |
-G | 與 -l 配合,但不列出群組 | |
-h | 與 -l 配合,檔案大小用 KiB/MiB/GiB 為單位 | |
-c | 與 -l 配合,列出 ctime 時間 | |
-u | 與 -l 配合,列出 atime 時間 | |
-t | 時間排序,一般與 -l 配合使用 (預設以 mtime 排序) | |
-i | 列出 inode 編號 | |
-n | 同 -l 但 GID/UID 用編號表示 | |
-m | 橫向列出檔案 | |
-o | 不列出群組 (同 -lG) | |
-p | 如為目錄,以〝/〞結尾 | |
-R | 目錄內的檔案一並列出 | |
-X | 以副檔名排序列出檔案 | |
--help | 指令自帶說明 | |
--time==ctime | 同 -c | |
--time==atime | 同 -u | |
--color=never | 黑白畫面列出檔案 |
$ ls /home ←列出 /home 下的檔案和目錄 aaa bbb john lost+found $ ls -p ~/ ←用選項 -p 或 -F 來區分檔案或是目錄(後面有〝/〞是目錄) Desktop/ Download/ Pictures/ Public/ Videos/ Documents/ Music/ project Publish $ ls -a ←以〝.〞開頭的檔案是隱藏檔,用選項 -a 就會現形 . Download .ICEauthority Templates .. .esd_auth .local .tomboy .bash_history .gconf .metacity .tomboy.log 以下略 |
$ ls -l ←列出冗長檔案內容 | |||||||
drwxr-xy-x | 2 | aaa | aaa | 4096 | 2011-09-07 | 11:44 | Desktop |
drwxr-xy-x | 2 | aaa | aaa | 4096 | 2011-09-07 | 11:44 | Documents |
drwxr-xy-x | 2 | aaa | aaa | 4096 | 2011-09-07 | 11:44 | Music |
drwxr-xy-x | 2 | aaa | aaa | 4096 | 2011-09-07 | 11:44 | Pictures |
drwxr-xy-x | 2 | aaa | aaa | 4096 | 2011-09-07 | 11:44 | Public |
↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ | ↑ |
檔案類型和 權限 |
連 結 數 |
擁 有 者 |
群 組 |
大小 | 日期 | 時間 | 檔案或目錄 |
$ ls -al ←選項 -a ,除了列出隱藏檔,還會列出此目錄和其父目錄的屬性 total 300 drwx------ 1 aaa aaa 4096 2011-08-02 11:23 . ←顯示此目錄的權限,擁有者,群組 drwxr-xr-x 26 root root 4096 2010-08-04 01:23 .. ←顯示父目錄的權限,擁有者,群組 -rw------- 1 aaa aaa 5849 2011-08-02 22:20 .bash_history ←〝.〞開頭為隱藏檔 -rw-r--r-- 1 aaa aaa 5849 2007-03-10 22:20 .bash_logout drwxr-xr-x 2 aaa aaa 4096 2010-08-04 01:23 Desktop 以下略 |
$ ls -d */ ←列出工作目錄內還有那些目錄 Desktop/ Download/ Pictures/ Templates/ Documents/ Music/ Public/ Videos/ $ ls -ld /home ←列出目錄的冗長資訊 drwxr-xr-x 6 root root 4096 2011-08-02 11:23 /home |
檔案動作 | 影響 | ||
atime | ctime | mtime | |
讀//執行 | 更新 | - | - |
權限/擁有者變更 | 更新 | 更新 | - |
內容變更 | 更新 | - | 更新 |
$ ls -lc ←列出檔案的 ctime $ ls -l --time=ctime ←同上 (ls -lc) $ ls -ltc ←列出檔案 ctime 並依 ctime 時間排序 $ ls -lu ←列出檔案的 atime $ ls -ltu ←列出檔案 atime 並依 atime 時間排序 $ ls -l ←列出檔案 mtime $ ls -lt ←列出檔案 mtime 並依 mtime 時間排序 |
$ alias ←後面都不接任何參數,則會列出目前有那些的指令被取了別名 alias egrep='egrep --color=auto' alias fgrep='fgrep --color=auto' alias grep='grep --color=auto' alias ls='ls --color=tty' alias vi='vim' |
$ alias md='mkdir' $ alias rd='rmdir' $ alias cls='clear' $ alias copy='cp' $ alias del='rm' |
$ unalias md ←消除 md 別名 $ unalias -a ←消除所有別名 |
$ stat /etc/fstab File: `/etc/fstab' Size: 532 Blocks: 16 IO Block: 4096 regular file Device: 802h/2050d Inode: 846151 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2011-08-11 01:22:13.000000000 +0800 ←atime Modify: 2011-08-03 23:52:41.000000000 +0800 ←mtime Change: 2011-08-04 00:52:16.000000000 +0800 ←ctime |
語法:cat [-otpiton][--option] file | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
cat/ (concatenate)檔案讀取/ Any |
-A | 同 -vET |
-b | 非空白列加行號 | |
-e | 同 -vE | |
-E | 把〝LF〞(ASCII = 0AHEX) 顯示為〝$〞(Linux 的換行以〝$〞顯示) | |
-n | 加行號 |
|
-s | 連續多個空白列,只列一列 | |
-t | 同 -vT | |
-T | 水平定位〝TAB〞(ASCII = 09HEX) 以〝^I〞顯示 | |
-v | 除了〝LF〞(Line Feed) 和〝TAB〞,其餘控制碼以〝^〞顯示,而 ASCII 碼 > 7F(HEX) 以〝M-〞顯示 | |
--help | 指令自帶說明 |
$ cat /etc/hosts.allow ←讀取檔案 /etc/hosts.allow # # hosts.allow This file contains access rules which are used to # allow or deny connections to network services that # either use the tcp_wrappers library or that have been # started through a tcp_wrappers-enabled xinetd. # # See 'man 5 hosts_options' and 'man 5 hosts_access' # for information on rule syntax. # See 'man tcpd' for information on tcp_wrappers # $ cat -TE /etc/hosts.allow ←〝TAB〞(ASCII = 09HEX) 以〝^I〞顯示, 且〝LF〞(ASCII = 0AHEX) 顯示〝$〞 #$ # hosts.allow^IThis file contains access rules which are used to$ #^I^Iallow or deny connections to network services that$ #^I^Ieither use the tcp_wrappers library or that have been$ #^I^Istarted through a tcp_wrappers-enabled xinetd.$ #$ 以下略 |
語法:head [-otpiton][--option] file | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
head/ 讀取檔案的前幾行/ Any |
-c[#bkm] | 輸出並非以行為單位,而是以 byte 為單位可接的選項有: 〝#〞輸出幾個 byte (〝#〞為數字) 〝[#]b〞b for Block(代表 512 byte) (〝#〞為數字,如省略代表 1) 〝[#]k〞k for Ki (〝#〞為數字,如省略代表 1) 〝[#]m〞m for Mi (〝#〞為數字,如省略代表 1) |
-n# | 只讀取檔案的前 # 行 (〝#〞為數字) |
|
+# | 跳過前面 # 行 (〝#〞為數字) | |
--help | 指令自帶說明 |
$ head text_file ←讀取檔案〝text_file〞前 10 行 $ head -c50 text_file ←讀取檔案〝text_file〞前 50 byte $ head +5 -n20 text_file ←讀取檔案〝text_file〞,從第 5 行開始讀取讀 20 行 $ head -cb text_file ←讀取檔案〝text_file〞,前 512 byte $ head -c2k text_file ←讀取檔案〝text_file〞,前 2k byte |
語法:tail [-otpiton][--option] file | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
tail/ 讀取檔案的後幾行/ Any |
-c[#bkm] | 用法同 head |
-n# | 只讀取檔案的最後 # 行 (〝#〞為數字) |
|
-f | 持續讀取檔案,直到檔案消失 (按 <Ctrl+C>結束) | |
-F | 持續讀取檔案,即使檔案消失了 (按 <Ctrl+C>結束) | |
--help | 指令自帶說明 |
$ seq 1 100 | tail -n5 ←透過 pipeline 讀取最後 5 行 96 97 98 99 100 |
$ seq 1 100 | tail -n5 | tac ←同上一例,但反相讀取 100 99 98 97 96 $ tac file.txt ←反向讀取檔案 |
語法:od [-otpiton][--option] file | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
od/ (octal dump)八進制輸出/ Any |
-A[doxn] | 最左邊位址顯示的方式,可接的選項有: 〝d〞為十進制 〝o〞為八進制 〝x〞為十六進制 〝n〞為不顯示位址 |
-t[cdfoux][#] | 顯示格式,可接的選項有: 〝c〞ASCII 字元 〝d〞為十進制 〝f〞為浮點 〝o〞為八進制 〝u〞為無號十進制 〝x〞為十六進制 〝#〞為要幾個 byte 為一組顯示 (〝#〞為數字),預設為 8 |
|
-j# | 跳過前面#個 byte (〝#〞為數字) | |
-N# | 讀取的 byte 數(〝#〞為數字) | |
-w# | 一列顯示多少 byte (〝#〞為數字) | |
-v | 不省略相同的列(預設如二列相同,相同的列只顯示〝*〞) | |
--help | 指令自帶說明 |
$ od -j50 -N20 -Ad -tx2 /bin/mkdir ←跳過前 50 byte,讀取 20 byte,位址以十進制顯示,且輸出格式為2個 byte 的十六進制 0000050 ←最左邊為位址顯示 001f 0006 0000 0034 0000 8034 0804 8034 0000066 0804 0100 0000070 $ od -tc -Ax /etc/hosts.allow ←以 ASCII 輸出,位址以十六進制顯示 000000 # \n # h o s t s . a l l o w \t 000010 T h i s f i l e c o n t a i 000020 n s a c c e s s r u l e s 000030 w h i c h a r e u s e d t (以下略) |
$ echo -e 'abc\x0a\x0adef\x0agh' ←用 UNIX 定義的 ASCII〝0A〞 來換行 abc def gh $ echo -e 'abc\n\ndef\ngh' ←用〝\n〞來代表換行字元 abc def gh $ echo -e 'abc\n\ndef\ngh' | cat -E ←用〝$〞來顯示換行字元 abc$ $ def$ gh$ |
語法:unix2dos [-otpiton][--option] file [backup file] | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
unix2dos/ (UNIX to DOS text file converter) UNIX 轉 DOS 格式/ Any |
-k | 不更動 mtime |
-n [ori-file new-file] | 保留原始舊檔,另存新檔 | |
-q | 安靜模式 (轉換過程不會顯示在螢幕) | |
--help | 指令自帶說明 |
$ unix2dos -n FileA dos.txt ←將 UNIX 格式的〝FileA〞轉為 DOS 格式的檔案〝dos.txt〞 $ unix2dos FileA ←如沒任何選項,新檔(DOS 格式)會把原始檔(Linux 格式)覆蓋 |
$ echo 'Hello World' ←以下三種都可接受,但第一個和第二個最正統 Hello World $ echo "Hello World" Hello World $ echo Hello World Hello World |
$ echo I'm a student ←引號『'』要成對出現,故此例是錯誤用法 >Ctrl+C ←可按 <Ctrl+C> 停止目前的運算或直到輸入另一『'』使引號成雙 $ echo "I'm a student" ←如果字串中有『'』,就要用雙引號『"』成對括起字串 I'm a student $ echo "I'm Lovin' You" ←『'』 或 『"』 也可用寫成巢狀(Nested) I'm Lovin' You $ echo I saw a "saw" I saw a saw ←輸出怪怪的 『"』 不見了,下例的用法才正統 $ echo 'I saw a "saw" ' ←養成正確語法的習慣很重要,指令如要處理字串,基本語法是用單引號 『'』 成對括起字串 I saw a "saw" |
語法:echo [-otpiton][--option] string | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
echo/ 顯示文字/ Any |
-n | 字串最後不加〝換行〞(newline) |
-e[ \abfntx0] | 延伸顯示格式,可接的選項有: \a 發出〝beep〞(ASCII = 07HEX ) \b〝退格〞(ASCII = 08HEX )(Backspace鍵) \f〝換頁〞(ASCII = 0CHEX )(游標位置不變,但在下行顯示) \n〝換行〞(ASCII = 0AHEX )(↵Enter鍵) \t〝水平定位〞(ASCII = 09HEX)(Tab鍵) \x## :##為十六進位的 ASCII 碼 \0### :### 八進位的 ASCII 碼 (\0 是數字的 zero) |
|
--help | 指令自帶說明 |
$ echo -e 'I\x27m a student, I saw a \x22saw\x22' ←『'』ASCII 碼為27HEX ,『"』ASCII 碼為 22HEX I'm a student, I saw a "saw" |
$ echo $'\x41\x42' ←列出 ASCII=41(hex)和42(hex)的字元 AB |
$ echo -e Linux is\f a PC OS Linux isf a PC OS ←輸出怪怪的?〝\f〞(水平定位)沒功用?有時如沒用單引號『'』成對把字串括起來,會錯誤動作 $ echo -e 'Linux is\f a PC OS' ←用單引號『'』成對把字串括起來就 Ok 了 Linux is a PC OS $ echo -e 'Linux is\n a PC OS' ←利用〝換行〞即可用 echo 顯示超過一行以上的字串 Linux is a PC OS $ echo -e 'Linux is\t a PC OS' Linux is a PC OS $ echo -e 'Linux is\x9 a PC OS' ←直接輸入 ASCII 碼〝09HEX〞來代替〝水平定位〞 Linux is a PC OS $ echo -e '\xe' ←不小心用錯 ASCII 的控制碼,可能會造成亂碼哦 ! [▒▒▒@┌⎺␌▒┌⎺⎽├ ·]$ ←亂碼產生時,記得輸入重置螢幕指令〝reset〞 |
語法:more [-otpiton][+ option][+/ option] file | ||
指令名稱/功能/命令使用者 | 選項 | 功能 |
more/ 可往下翻頁閱讀/ Any |
-# | 〝#〞為數字,代表螢幕要顯示的列數 |
+# | 〝#〞為數字,代表從第幾行剛始輸出 | |
+/<string> | 搜索檔案中的字串,然後由此開始輸出 |
$ more +3 /etc/services ←從第三行開始閱讀檔案〝/etc/services〞 # Network services, Internet style # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, most entries here have two entries 中間略 tcpmux 1/udp # TCP port service multiplexer --More--(0%) ←目前所在的頁數佔整個檔案的百分比 |
$ less /usr/share/dict/linux.words $ cat /usr/share/dict/linux.words | less ← 結果同上(less/more 常透過 pipeline 操作) |